﻿using NJ.EntityFramework.Migrations;
using System.Data.Entity;
using System.Reflection;

namespace NJ.EntityFramework
{
    public class NJContext : DbContext
    {
        //您的上下文已配置为从您的应用程序的配置文件(App.config 或 Web.config)
        //使用“NJContext”连接字符串。默认情况下，此连接字符串针对您的 LocalDb 实例上的
        //“NJ.EntityFramework.NJContext”数据库。
        // 
        //如果您想要针对其他数据库和/或数据库提供程序，请在应用程序配置文件中修改“NJContext”
        //连接字符串。
        public NJContext()
            : base("name=NJContext")
        {
        }
        static NJContext()
        {
            //迁移到最后一个版本
            Database.SetInitializer(new MigrateDatabaseToLatestVersion<NJContext, Configuration>());
        }

        //为您要在模型中包含的每种实体类型都添加 DbSet。有关配置和使用 Code First  模型
        //的详细信息，请参阅 http://go.microsoft.com/fwlink/?LinkId=390109。

        // public virtual DbSet<MyEntity> MyEntities { get; set; }


        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            //GetCallingAssembly 调用者程序集
            //GetExecutingAssembly 当前程序集
            Assembly assembly = Assembly.GetExecutingAssembly();
            //所有继承自EntityTypeConfiguration这个类的映射文件都会被自动注册进来
            modelBuilder.Configurations.AddFromAssembly(assembly);
        }
    }
}